%define pg.RootNamespace Foo
%define pg.SourceContextNamespace ParserGenerator.Input
%define pg.OutputNamespace ParserGenerator.Output

LexicalExpression:
    Empty
    String (value : string)
    QuoteString (value : string)
    CharClass (value : char)
    NameReference (name : string)
    Kleene (operand : LexicalExpression)
    Optional (operand : LexicalExpression)
    Positive (operand : LexicalExpression)
    Repeat (operand : LexicalExpression, minCount : int*?, maxCount : int*?)
    Concat (left : LexicalExpression, right : LexicalExpression)
    Union (left : LexicalExpression, right : LexicalExpression)

ICharClassCollector.Process(n : LexicalExpression)

%%
